package br.trainee.web.controller;

import java.io.IOException;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import javax.annotation.PostConstruct;
import javax.faces.application.FacesMessage;
import javax.faces.component.UIInput;
import javax.faces.component.html.HtmlInputText;
import javax.faces.component.html.HtmlSelectOneMenu;
import javax.faces.context.FacesContext;
import javax.faces.event.AjaxBehaviorEvent;
import javax.faces.model.SelectItem;
import javax.faces.view.ViewScoped;
import javax.inject.Inject;
import javax.inject.Named;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import javax.servlet.http.Part;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;

import org.apache.commons.io.IOUtils;
import org.omnifaces.util.Faces;

import br.trainee.web.bo.impl.ClinicaBO;
import br.trainee.web.constraint.service.Cep;
import br.trainee.web.constraint.service.Cnpj;
import br.trainee.web.constraint.service.EmptyComboBox;
import br.trainee.web.constraint.service.EmptyField;
import br.trainee.web.enumeradores.TipoAcesso;
import br.trainee.web.util.UtilFuncoes;
import br.trainee.web.vo.CidadeVO;
import br.trainee.web.vo.ClinicaTelefoneClinicaVO;
import br.trainee.web.vo.ClinicaVO;
import br.trainee.web.vo.EmailClinicaVO;
import br.trainee.web.vo.EnderecoClinicaVO;
import br.trainee.web.vo.EstadoVO;
import br.trainee.web.vo.StatusVO;
import br.trainee.web.vo.TelefoneClinicaVO;
import br.trainee.web.vo.TipoTelefoneVO;


@Named("clinica")
@ViewScoped
public class ClinicaBean implements Serializable {

	private static final long serialVersionUID = 1L;
	
	//Atributos Tela Inclusão
	@EmptyField
	@Size(max=100, message="{msg_validacao_campo_obrigatorio}")
	private String nomeClinicaInc;
	
	@EmptyField
	@Cnpj
	private String cnpjClinicaInc;
	
	
	private String emailClinicaInc1;
	private String emailClinicaInc2;
	
	private Integer dddClinicaInc1;
	private Long telefoneClinicaInc1;
	private Long codTipoTelefoneInc1;
	private List<SelectItem> listaTipoTelefoneInc; 
	
	private Integer dddClinicaInc2;
	private Long telefoneClinicaInc2;
	private Long codTipoTelefoneInc2;
	
	private Long codEstadoInc;
	private List<SelectItem> listaEstadosInc;
	
	
	private Long codCidadeInc;
	private List<SelectItem> listaCidadesInc;
	
	@EmptyField
	@Size(max=200, message="{msg_validacao_campo_obrigatorio}")
	private String logradouroClinicaInc;
	
	@EmptyField
	@Size(max=150, message="{msg_validacao_campo_obrigatorio}")
	private String bairroClinicaInc;
	
	@EmptyField
	@Cep
	private String cepClinicaInc;
	
	private String complementoClinicaInc;
	
	private Part imagemClinica;
	
	private boolean flagFrameInc;
	
	private boolean flagImagem;
	
	private String msgImagem;
	
	private byte[] vetorImagem;
	
	@NotNull(message="O Campo de data é Obrigatório!")
	private Date dataAberturaInc;
	
	//Atributos da tela de alteração de clinica
	private ClinicaVO clinicaSelecionadaAlt;
	
	@EmptyField
	@Size(max=100, message="{msg_validacao_campo_obrigatorio}")
	private String nomeClinicaAlt;
	
	@NotNull(message="O Campo de data é Obrigatório!")
	private Date dataAberturaAlt;
	
	@EmptyField
	@Cnpj
	private String cnpjClinicaAlt;
	
	private Part imagemClinicaAlt;
	
	private boolean flagFrameAlt;
	
	private boolean flagImagemAlt;
	
	private String msgImagemAlt;
	
	private byte[] vetorImagemAlt;
	
	//Bindings dos campo de alteração de clinica
	private HtmlInputText campoNomeClinicaAlt;
	private HtmlInputText campoCnpjClinicaAlt;
	private ClinicaVO clinicaVODetalhe;
	
	//Atributos da tela de alteração de email
	private EmailClinicaVO emailSelecionadoAlt;
	
	@EmptyField
	@Size(max=100, message="{msg_validacao_campo_obrigatorio}")
	private String emailClinicaAlt;
	
	//Bindings dos campos de alteração de email
	private HtmlInputText campoEmailClinicaAlt;
	
	//Atributos da tela de alteração de telefone
	private TelefoneClinicaVO telefoneSelecionadoAlt;
	
	@EmptyField
	private Integer dddClinicaAlt;
	
	@EmptyField
	private Long telefoneClinicaAlt;
	
	@EmptyComboBox
	private Long codTipoTelefoneAlt;
	private List<SelectItem> listaTipoTelefoneAlt;
	
	//Bindings dos campos de alteração de telefone
	private HtmlSelectOneMenu campoTipoTelefoneAlt;
	private HtmlInputText campoDddClinicaAlt;
	private HtmlInputText campoTelefoneClinicaAlt;
	
	//Atributos da tela de alteração de endereco
	private EnderecoClinicaVO enderecoSelecionadoAlt;
	
	@EmptyField
	@Size(max=200, message="{msg_validacao_campo_obrigatorio}")
	private String logradouroClinicaAlt;
	
	@EmptyField
	@Size(max=150, message="{msg_validacao_campo_obrigatorio}")
	private String bairroClinicaAlt;
	
	@EmptyField
	@Cep
	private String cepClinicaAlt;
	
	private String complementoClinicaAlt;
	
	private Long codEstadoAlt;
	private List<SelectItem> listaEstadosAlt;
	
	@EmptyComboBox
	private Long codCidadeAlt;
	private List<SelectItem> listaCidadesAlt;
	
	//Atributos do excluir
	private ClinicaVO clinicaRecebidoEx;
	private EmailClinicaVO  emailRecebidoEx;
	private EnderecoClinicaVO enderecoRecebidoEx;
	private TelefoneClinicaVO telefoneRecebidoEx;
	
	//Bindings dos campos da Alteração de endereco
	private HtmlSelectOneMenu campoCidadeAlt;
	private HtmlSelectOneMenu campoEstadoAlt;
	private HtmlInputText campoLogradouroClinicaAlt;
	private HtmlInputText campoBairroClinicaAlt;
	private HtmlInputText campoCepClinicaAlt;
	private HtmlInputText campoComplementoClinicaAlt;
	
	//Atributos da tela de consulta
	private String nomeClinicaCon;
	private String cnpjClinicaCon;
	private List<ClinicaVO> listaClinicasCon;
	private ClinicaVO clinicaSelecionadaCon;
	private List<EmailClinicaVO> listaEmailsCon;
	private List<TelefoneClinicaVO> listaTelefonesCon;
	private List<EnderecoClinicaVO> listaEnderecosCon;
	
	//Bindings dos Campos da Inclusão
	private HtmlInputText campoNomeClinicaInc;
	private HtmlInputText campoCnpjClinicaInc;
	private HtmlInputText campoEmailClinciaInc1;
	private HtmlInputText campoEmailClinciaInc2;
	private HtmlInputText campoDddClinicaInc1;
	private HtmlInputText campoTelefoneClinicaInc1;
	private HtmlSelectOneMenu campoTipoTelefoneInc1;
	private HtmlInputText campoDddClinicaInc2;
	private HtmlInputText campoTelefoneClinicaInc2;
	private HtmlSelectOneMenu campoTipoTelefoneInc2;
	private HtmlSelectOneMenu campoEstadoInc;
	private HtmlSelectOneMenu campoCidadeInc;
	private HtmlInputText campoLogradouroClinicaInc;
	private HtmlInputText campoBairroClinicaInc;
	private HtmlInputText campoCepClinicaInc;
	private HtmlInputText campoComplementoClinicaInc;
	
	//Exclusão e Inclusão de email AUX
	private List<EmailClinicaVO> listaEmailsAuxInc;
	private List<EmailClinicaVO> listaEmailsAuxExc;
	private List<EmailClinicaVO> listaDialogEmail;
	private String emailClinicaAux;
	private HtmlInputText campoEmailClinciaInc;
	
	//Exclusão e Inclusão de endereco AUX
 	private List<EnderecoClinicaVO> listaEnderecoAuxInc;
 	private List<EnderecoClinicaVO> listaEnderecoAuxExc;
 	private List<EnderecoClinicaVO> listaDialogEndereco;
 	private String logradouroClinicaAux;
 	private String bairroClinicaAux;
 	private String cepClinicaAux;
 	private String complementoClinicaAux;
 	private Long codEstadoAux;
 	private List<SelectItem> listaEstadosAux;
 	private Long codCidadeAux;
 	private List<SelectItem> listaCidadesAux;
 	private HtmlSelectOneMenu campoCidadeAux;
 	
 	//Exclusão e Inclusão de telefone AUX
 	private List<TelefoneClinicaVO> listaTelefoneAuxInc;
 	private List<TelefoneClinicaVO> listaTelefoneAuxExc;
 	private List<TelefoneClinicaVO> listaDialogTelefone;
 	private Long telefoneClinicaAux;
 	private Integer dddClinicaAux;
 	private Long codTipoTelefoneAux;
 	private List<SelectItem> listaTipoTelefoneAux;
	
 	//Atributos do AutoComplete
 	
 	private String campoAutoComplete;
 	
	private Long idClinicaAlt;
	
	@Inject
	private ClinicaBO bo;
	
	@Inject
	private LinguagemBean linguagem;
	
	private StatusVO status = null;
		
	public String abrirTelaAlteracao(ClinicaVO clinica, String action){
		
		StringBuilder url = new StringBuilder();
		url.append("/jsf-pages/paginas/clinica/alterarClinica");
		url.append("?faces-redirect=true");
		url.append("&action=");
		url.append(action);
		
		HttpServletRequest request = (HttpServletRequest) FacesContext.getCurrentInstance().getExternalContext().getRequest();
		
		HttpSession sessao = request.getSession();
		
		sessao.setAttribute(UtilFuncoes.CLINICA_ALTERAR, clinica);
	
		
		return url.toString();
	}
	
	public void uploadArquivoImagem(){
		
		this.flagFrameInc = true;
		this.flagImagem = true;
	
		if(!bo.isFormatoValido(imagemClinica.getSubmittedFileName())){
			
			this.msgImagem = "Formato de imagem invalido!";
			
			this.flagImagem = false;
		}
		
		if(!bo.isTamanhoImagemValido(imagemClinica.getSize())){

			
			this.msgImagem += "Tamanho de imagem invalido!";
			
			this.flagImagem = false;
		}
		
		if(flagImagem){
			
			try {
				
				vetorImagem = IOUtils.toByteArray(imagemClinica.getInputStream());
				this.msgImagem = "Imagem incluida com Sucesso!";
				
			} catch (IOException e) {
				
				FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, linguagem.getString("incluir_clinica_erro_banco"),""));
			
				return ;
			}
		
		}
	}
	
	
	public void uploadImagemAlt(){
		
		this.flagFrameAlt = true;
		this.flagImagemAlt = true;
		
		if(!bo.isFormatoValido(imagemClinicaAlt.getSubmittedFileName())){
			
			this.msgImagemAlt = "Formato de imagem Invalido! ";
			
			this.flagImagemAlt = false;
		}
		
		if(!bo.isTamanhoImagemValido(imagemClinicaAlt.getSize())){
			
			this.msgImagemAlt += "Tamanho de imagem Invalido!";
			
			this.flagImagemAlt = false;
		}
		
		if(flagImagemAlt){
			
			try {
				
				vetorImagemAlt = IOUtils.toByteArray(imagemClinicaAlt.getInputStream());
				this.msgImagemAlt = "Imagem Incluida com sucesso";
				
			} catch (IOException e) {
				
				FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, linguagem.getString("incluir_clinica_erro_banco"),""));
				
				return ;
			}
		}
	}
	
	public void salvarEmailAux(){
		
		EmailClinicaVO email = new EmailClinicaVO();
		
		email.setEmailClinica(emailClinicaAux);
		email.setStatus(status);
		email.setClinica(new ClinicaVO());
		email.getClinica().setIdPessoa(idClinicaAlt);
		listaEmailsAuxInc.add(email);
		listaDialogEmail.add(email);
		emailClinicaAux = null;
	}
	
	public void excluirEmailAux(EmailClinicaVO email){
		
		email.setStatus(bo.consultarStatusPorTipo(UtilFuncoes.TIPO_STATUS_INATIVO));
		listaEmailsAuxExc.add(email);
		listaDialogEmail.remove(email);
		listaEmailsAuxInc.remove(email);
	}
	
	public void salvarEnderecoAux(){
		
		EnderecoClinicaVO endereco = new EnderecoClinicaVO();
		
		EstadoVO estado = null;
		CidadeVO cidade = null;
		
		for (SelectItem si : listaEstadosAux) {
			
			if(si.getValue().equals(codEstadoAux)){
				
				estado = new EstadoVO();
				estado.setIdEstado((Long) si.getValue());
				estado.setNomeEstado(si.getLabel());
			}
		}
		
		for (SelectItem si : listaCidadesAux) {
			
			if(si.getValue().equals(codCidadeAux)){
				
				cidade = new CidadeVO();
				cidade.setIdCidade((Long) si.getValue());
				cidade.setNomeCidade(si.getLabel());
			}
		}
		
		endereco.setBairroClinica(bairroClinicaAux);
		endereco.setCepClinica(cepClinicaAux);
		endereco.setCidade(cidade);
		endereco.getCidade().setEstado(estado);
		endereco.setClinica(new ClinicaVO());
		endereco.getClinica().setIdPessoa(idClinicaAlt);
		endereco.setComplementoClinica(complementoClinicaAux);
		endereco.setLogradouroClinica(logradouroClinicaAux);
		endereco.setStatus(status);
		
		listaEnderecoAuxInc.add(endereco);
		listaDialogEndereco.add(endereco);
		
		bairroClinicaAux = null;
		cepClinicaAux = null;
		complementoClinicaAux = null;
		logradouroClinicaAux = null;
		codEstadoAux = 0l;
		codCidadeAux = 0l;
	}
	
	public void excluirEnderecoAux(EnderecoClinicaVO endereco){
		
		endereco.setStatus(bo.consultarStatusPorTipo(UtilFuncoes.TIPO_STATUS_INATIVO));
		listaEnderecoAuxExc.add(endereco);
		listaDialogEndereco.remove(endereco);
		listaEnderecoAuxInc.remove(endereco);
	}
	
	public void salvarTelefoneAux(){
		
		TelefoneClinicaVO telefone = new TelefoneClinicaVO();
		
		TipoTelefoneVO tipo = null;
		
		for (SelectItem si : listaTipoTelefoneAux) {
			
			if(si.getValue().equals(codTipoTelefoneAux)){
				
				tipo = new TipoTelefoneVO();
				tipo.setIdTipoTelefone((Long) si.getValue());
				tipo.setDescricao(si.getLabel());
			}
		}
		
		telefone.setDddClinica(dddClinicaAux);
		telefone.setTelefoneClinica(telefoneClinicaAux);
		telefone.setTipoTelefone(tipo);
		telefone.setStatus(status);
		
		listaTelefoneAuxInc.add(telefone);
		listaDialogTelefone.add(telefone);
		
		dddClinicaAux = null;
		telefoneClinicaAux = null;
		codTipoTelefoneAux = 0l;
	}
	
	public void excluirTelefoneAux(TelefoneClinicaVO telefone){
		
		telefone.setStatus(bo.consultarStatusPorTipo(UtilFuncoes.TIPO_STATUS_INATIVO));
		listaTelefoneAuxExc.add(telefone);
		listaTelefoneAuxInc.remove(telefone);
		listaDialogTelefone.remove(telefone);
	}
	
	public void pesquisarClinica(){

		String nomeClinica = Faces.getRequestParameter("nomeClinica");
		String cnpjClinica = Faces.getRequestParameter("cnpjClinica");
		String idClinica = Faces.getRequestParameter("idClinica");

		ClinicaVO clinica = new ClinicaVO();
		
		clinica.setNomePessoa(nomeClinica);
		clinica.setCnpj(cnpjClinica);
		clinica.setIdPessoa(Long.parseLong(idClinica));
		
		List<ClinicaVO> listaClinica = new ArrayList<ClinicaVO>();
		
		listaClinica.add(clinica);
		
		this.listaClinicasCon = listaClinica;
		
		/*
		HttpServletRequest request = (HttpServletRequest) FacesContext.getCurrentInstance().getExternalContext().getRequest();
		
		HttpSession sessao = request.getSession();
		
		ClinicaVO clinica = (ClinicaVO) sessao.getAttribute("clinicaSelecionada");

		List<ClinicaVO> listaClinica = new ArrayList<ClinicaVO>();
		
		listaClinica.add(clinica);
		
		this.listaClinicasCon = listaClinica;
		*/
	}
	
	
	public void detalharClinica(){
		
		ClinicaVO clinica = bo.detalharClinica(clinicaSelecionadaCon.getIdPessoa());
		
		listaEmailsCon = clinica.getEmails();
		listaTelefonesCon = clinica.getListaTelefones();
		listaEnderecosCon = clinica.getEnderecos();
	}
	
	public void buscarCidadePorEstado(AjaxBehaviorEvent evento){
				
		UIInput comboEstado = (UIInput) evento.getComponent();
		Long codEstado = (Long) comboEstado.getValue();
		
		if(codEstado==null || codEstado.equals(0L)){
			
			this.campoCidadeInc.setDisabled(true);
			
		}
		
		else{
			
			listaCidadesInc = new ArrayList<SelectItem>();
						
			List<CidadeVO> listaCidades = bo.consultarCidadePorEstado(codEstado);
			
			for (CidadeVO cidade : listaCidades) {
				
				listaCidadesInc.add(new SelectItem(cidade.getIdCidade(), cidade.getNomeCidade()));
			}
			
			this.campoCidadeInc.setDisabled(false);
		}
		
	}
	
	public void buscarCidadePorEstadoAux(AjaxBehaviorEvent evento){
		
		UIInput comboEstado = (UIInput) evento.getComponent();
		Long codEstado = (Long) comboEstado.getValue();
		
		listaCidadesAux = new ArrayList<SelectItem>();
		
		if(!codEstado.equals(0L)){
			
			List<CidadeVO> listaCidades = bo.consultarCidadePorEstado(codEstado);
			
			for (CidadeVO cidade : listaCidades) {
				
				listaCidadesAux.add(new SelectItem(cidade.getIdCidade(), cidade.getNomeCidade()));
			}
			
			this.campoCidadeAux.setDisabled(false);
		}
	}
	
	public void buscarCidadePorEstadoAlt(AjaxBehaviorEvent evento){
		
		UIInput comboEstado = (UIInput) evento.getComponent();
		Long codEstado = (Long) comboEstado.getValue();
		
		listaCidadesAlt = new ArrayList<SelectItem>();
		
		if(!codEstado.equals(0L)){
			
			List<CidadeVO> listaCidades = bo.consultarCidadePorEstado(codEstado);
			
			for (CidadeVO cidade : listaCidades) {
				
				listaCidadesAlt.add(new SelectItem(cidade.getIdCidade(), cidade.getNomeCidade()));
			}
			
			this.campoCidadeAlt.setDisabled(false);
		}
		
	}
	
	@PostConstruct
	public void inicializarTela() throws IOException{
		
		this.status = bo.consultarStatusPorTipo(UtilFuncoes.TIPO_STATUS_ATIVO);
		
		codCidadeInc = 0l;
		String action = FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get(UtilFuncoes.PARAM_ENTRADA);
		
		if(action != null){
			
			
			if(action.trim().equals(TipoAcesso.INCLUIR.getAcesso())){
				
				dddClinicaInc1 = 1;
				dddClinicaInc2 = 1;
				
				List<TipoTelefoneVO> listaTipoTelefone = bo.consultarTodosTipoTelefones();
				listaTipoTelefoneInc = new ArrayList<SelectItem>();
				
				for (TipoTelefoneVO tipoTelefone : listaTipoTelefone) {
					
					listaTipoTelefoneInc.add(new SelectItem(tipoTelefone.getIdTipoTelefone(), tipoTelefone.getDescricao()));
				}
				
				List<EstadoVO> listaEstados = bo.consultarTodosEstados();
				listaEstadosInc = new ArrayList<SelectItem>();
				
				for (EstadoVO estado : listaEstados) {
					
					listaEstadosInc.add(new SelectItem(estado.getIdEstado(), estado.getNomeEstado()));
				}
			}
			else if(action.trim().equals(TipoAcesso.CONSULTAR.getAcesso())){
				
				
				
			}
			else if(action.trim().equals(TipoAcesso.ALTERAR.getAcesso())){
				
				HttpServletRequest request = (HttpServletRequest) FacesContext.getCurrentInstance().getExternalContext().getRequest();
				
				HttpSession sessao = request.getSession();
				
				ClinicaVO clinicaAlterar = (ClinicaVO) sessao.getAttribute(UtilFuncoes.CLINICA_ALTERAR);
				
				this.clinicaSelecionadaAlt = clinicaAlterar;
				
				this.idClinicaAlt = clinicaAlterar.getIdPessoa();
				this.nomeClinicaAlt = clinicaAlterar.getNomePessoa();
				this.cnpjClinicaAlt = clinicaAlterar.getCnpj();
				this.dataAberturaAlt = clinicaAlterar.getDataAbertura();
				
				listaDialogEmail = bo.consultarEmailPorIdClinica(idClinicaAlt);
				listaDialogEndereco = bo.consultarEnderecoPorIdClinica(idClinicaAlt);
				listaDialogTelefone = bo.consultarTelefonePorIdClinica(idClinicaAlt);
				
				List<EstadoVO> listaEstados = bo.consultarTodosEstados();
				listaEstadosAux = new ArrayList<SelectItem>();
				
				for (EstadoVO estado : listaEstados) {
					
					listaEstadosAux.add(new SelectItem(estado.getIdEstado(), estado.getNomeEstado()));
				}
				
				List<TipoTelefoneVO> listaTipoTelefones = bo.consultarTodosTipoTelefones();
				listaTipoTelefoneAux = new ArrayList<SelectItem>();
				
				for (TipoTelefoneVO tipoTelefone : listaTipoTelefones) {
					
					listaTipoTelefoneAux.add(new SelectItem(tipoTelefone.getIdTipoTelefone(), tipoTelefone.getDescricao()));
				}
				
				listaEmailsAuxInc = new ArrayList<EmailClinicaVO>();
				listaEmailsAuxExc = new ArrayList<EmailClinicaVO>();
				listaEnderecoAuxExc = new ArrayList<EnderecoClinicaVO>();
				listaEnderecoAuxInc = new ArrayList<EnderecoClinicaVO>();
				listaTelefoneAuxExc = new ArrayList<TelefoneClinicaVO>();
				listaTelefoneAuxInc = new ArrayList<TelefoneClinicaVO>();
				
				
			}
			else if(action.trim().equals(TipoAcesso.CONSULTAR_ALTERAR.getAcesso())){
				
				listaClinicasCon = bo.consultarClinicaPorNomeECnpj("", "");
				
			}
			else if(action.trim().equals(TipoAcesso.ALTERAR_EMAIL.getAcesso())){
			
				String idEmailTexto = FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get("idEmail");
				Long idEmail = Long.parseLong(idEmailTexto);
				
				emailSelecionadoAlt = bo.consultarEmailPorId(idEmail);
				emailClinicaAlt = emailSelecionadoAlt.getEmailClinica();
				clinicaVODetalhe = emailSelecionadoAlt.getClinica();
				
			}
			else if(action.trim().equals(TipoAcesso.ALTERAR_ENDERECO.getAcesso())){
				
				String idEnderecoTexto = FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get("idEndereco");
				Long idEndereco = Long.parseLong(idEnderecoTexto);
				
				enderecoSelecionadoAlt = bo.consultarEnderecoPorId(idEndereco);
				logradouroClinicaAlt = enderecoSelecionadoAlt.getLogradouroClinica();
				bairroClinicaAlt = enderecoSelecionadoAlt.getBairroClinica();
				cepClinicaAlt = enderecoSelecionadoAlt.getCepClinica();
				complementoClinicaAlt = enderecoSelecionadoAlt.getComplementoClinica();
				codCidadeAlt = enderecoSelecionadoAlt.getCidade().getIdCidade();
				codEstadoAlt = enderecoSelecionadoAlt.getCidade().getEstado().getIdEstado();
				clinicaVODetalhe = enderecoSelecionadoAlt.getClinica();
				
				List<EstadoVO> listaEstados = bo.consultarTodosEstados();
				listaEstadosAlt =  new ArrayList<SelectItem>();
				
				for (EstadoVO estado : listaEstados) {
					
					listaEstadosAlt.add(new SelectItem(estado.getIdEstado(), estado.getNomeEstado()));
				}
				
				List<CidadeVO> listaCidades = bo.consultarCidadePorEstado(codEstadoAlt);
				listaCidadesAlt = new ArrayList<SelectItem>();
				
				for (CidadeVO cidade : listaCidades) {
					
					listaCidadesAlt.add(new SelectItem(cidade.getIdCidade(), cidade.getNomeCidade()));
				}
			}
			else if(action.trim().equals(TipoAcesso.ALTERAR_TELEFONE.getAcesso())){
				
				String idTelefoneTexto = FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get("idTelefone");
				Long idTelefone = Long.parseLong(idTelefoneTexto);
				
				telefoneSelecionadoAlt = bo.consultarTelefonePorId(idTelefone);
				dddClinicaAlt = telefoneSelecionadoAlt.getDddClinica();
				telefoneClinicaAlt = telefoneSelecionadoAlt.getTelefoneClinica();
				codTipoTelefoneAlt = telefoneSelecionadoAlt.getTipoTelefone().getIdTipoTelefone();
				
				List<TipoTelefoneVO> listaTipoTelefones = bo.consultarTodosTipoTelefones();
				listaTipoTelefoneAlt = new ArrayList<SelectItem>();
				
				for (TipoTelefoneVO tipoTelefone : listaTipoTelefones) {
					
					listaTipoTelefoneAlt.add(new SelectItem(tipoTelefone.getIdTipoTelefone(), tipoTelefone.getDescricao()));
				}
			}
			else{
				
				FacesContext.getCurrentInstance().getExternalContext().redirect(
				FacesContext.getCurrentInstance().getExternalContext().getRequestContextPath()
				+ "/jsf-pages/erros/erro404.html");
			}
		}
		else{
			
			FacesContext.getCurrentInstance().getExternalContext().redirect(
			FacesContext.getCurrentInstance().getExternalContext().getRequestContextPath()
			+ "/jsf-pages/erros/erro404.html");
		}
	}
	
	public void limparFormulario(){
		campoNomeClinicaInc.setSubmittedValue("");
		campoBairroClinicaInc.setSubmittedValue("");
		campoCnpjClinicaInc.setSubmittedValue("");
		campoEmailClinciaInc1.setSubmittedValue("");
		campoEmailClinciaInc2.setSubmittedValue("");
		campoDddClinicaInc1.setSubmittedValue("");
		campoTelefoneClinicaInc1.setSubmittedValue("");
		campoTipoTelefoneInc1.setSubmittedValue(0);
		campoDddClinicaInc2.setSubmittedValue("");
		campoTelefoneClinicaInc2.setSubmittedValue("");
		campoTipoTelefoneInc2.setSubmittedValue(0);
		campoEstadoInc.setSubmittedValue(0);
		campoCidadeInc.setSubmittedValue(0);
		campoCidadeInc.setDisabled(true);
		campoLogradouroClinicaInc.setSubmittedValue("");
		campoBairroClinicaInc.setSubmittedValue("");
		campoCepClinicaInc.setSubmittedValue("");
		campoComplementoClinicaInc.setSubmittedValue("");
	}
	
	public String alterarClinica(){ 
		ClinicaVO clinica = new ClinicaVO();
		ClinicaTelefoneClinicaVO ct = null;
		
		clinica.setIdPessoa(clinicaSelecionadaAlt.getIdPessoa());
		clinica.setNomePessoa(nomeClinicaAlt);
		clinica.setCnpj(cnpjClinicaAlt);
		clinica.setDataAbertura(dataAberturaAlt);
		clinica.setStatusPessoa(status);
		
		List<ClinicaTelefoneClinicaVO> listaCt = new ArrayList<ClinicaTelefoneClinicaVO>();
		
		if(listaTelefoneAuxInc != null){
		
			for (TelefoneClinicaVO telefone : listaTelefoneAuxInc) {
				
				ct = new ClinicaTelefoneClinicaVO();
				
				ct.setClinica(clinica);
				ct.setTelefone(telefone);
				ct.setOperadora("Fake");
				
				listaCt.add(ct);
			}
		
		}
		
		clinica.setListaEmailAuxExc(listaEmailsAuxExc);
		clinica.setListaEmailAuxInc(listaEmailsAuxInc);
		clinica.setListaEnderecoAuxExc(listaEnderecoAuxExc);
		clinica.setListaEnderecoAuxInc(listaEnderecoAuxInc);
		clinica.setListaTelefoneAuxExc(listaTelefoneAuxExc);
		clinica.setListaClinicaTelefone(listaCt);
		
		bo.alterar(clinica);
		
		return UtilFuncoes.PATH_RETORNO;
		
	}
	
	public void limparFormularioAlterar(){
		
		campoNomeClinicaAlt.setSubmittedValue("");
		campoCnpjClinicaAlt.setSubmittedValue("");
	}
	
	public void receberIdClinica(ClinicaVO clinica){
		
		this.clinicaRecebidoEx = clinica;
	}
	
	public void excluirClinica(){
		
		clinicaRecebidoEx.setStatusPessoa(bo.consultarStatusPorTipo(UtilFuncoes.TIPO_STATUS_INATIVO));
		
		bo.excluirClinica(this.clinicaRecebidoEx);
		
		listaClinicasCon = bo.consultarClinicaPorNomeECnpj("", "");
		
	}
	
	
	public String alterarEmail(){
		EmailClinicaVO email = new EmailClinicaVO();
		
		email.setIdEmailClinica(emailSelecionadoAlt.getIdEmailClinica());
		email.setClinica(clinicaVODetalhe);
		email.setEmailClinica(emailClinicaAlt);
		email.setStatus(status);
		
		bo.alterarEmail(email);
		
		return UtilFuncoes.PATH_RETORNO;
	}
	
	public void limparFormularioAlterarEmail(){
		
		campoEmailClinicaAlt.setSubmittedValue("");
	}
	
	public void receberIdEmail(EmailClinicaVO email){
		
		this.emailRecebidoEx = email;
	}
	
	public void excluirEmail(){
		
		emailRecebidoEx.setStatus(bo.consultarStatusPorTipo(UtilFuncoes.TIPO_STATUS_INATIVO));
		
		bo.excluirEmail(this.emailRecebidoEx);
		
		listaEmailsCon = bo.consultarEmailPorIdClinica(clinicaSelecionadaCon.getIdPessoa());
	}
	
	public String alterarEndereco(){
		
		EnderecoClinicaVO endereco = new EnderecoClinicaVO();
		
		endereco.setIdEnderecoClinica(enderecoSelecionadoAlt.getIdEnderecoClinica());
		endereco.setBairroClinica(bairroClinicaAlt);
		endereco.setCepClinica(cepClinicaAlt);
		endereco.setLogradouroClinica(logradouroClinicaAlt);
		endereco.setComplementoClinica(complementoClinicaAlt);
		endereco.setCidade(new CidadeVO());
		endereco.getCidade().setIdCidade(codCidadeAlt);
		endereco.setClinica(clinicaVODetalhe);
		endereco.setStatus(status);
		
		bo.alterarEndereco(endereco);
		
		return UtilFuncoes.PATH_RETORNO;
	}
	
	public void limparFormularioAlterarEndereco(){
		
		campoBairroClinicaAlt.setSubmittedValue("");
		campoCepClinicaAlt.setSubmittedValue("");
		campoLogradouroClinicaAlt.setSubmittedValue("");
		campoComplementoClinicaAlt.setSubmittedValue("");
		campoCidadeAlt.setSubmittedValue(0);
		campoEstadoAlt.setSubmittedValue(0);
	}
	
	public void receberIdEndereco(EnderecoClinicaVO endereco){
		
		this.enderecoRecebidoEx = endereco;
	}
	
	public void excluirEndereco(){
		
		enderecoRecebidoEx.setStatus(bo.consultarStatusPorTipo(UtilFuncoes.TIPO_STATUS_INATIVO));
		
		bo.excluirEndereco(this.enderecoRecebidoEx);
		
		listaEnderecosCon = bo.consultarEnderecoPorIdClinica(clinicaSelecionadaCon.getIdPessoa());
	}
	
	public String alterarTelefone(){
		
		TelefoneClinicaVO telefone = new TelefoneClinicaVO();
		
		telefone.setIdTelefoneClinica(telefoneSelecionadoAlt.getIdTelefoneClinica());
		telefone.setDddClinica(dddClinicaAlt);
		telefone.setTelefoneClinica(telefoneClinicaAlt);
		telefone.setTipoTelefone(new TipoTelefoneVO());
		telefone.getTipoTelefone().setIdTipoTelefone(codTipoTelefoneAlt);
		telefone.setStatus(status);
		
		bo.alterarTelefone(telefone);
		
		return UtilFuncoes.PATH_RETORNO;
	}
	
	public void limparFormularioAlterarTelefone(){
	
		campoDddClinicaAlt.setSubmittedValue("");
		campoTelefoneClinicaAlt.setSubmittedValue("");
		campoTipoTelefoneAlt.setSubmittedValue(0);
	}
	
	public void receberIdTelefone(TelefoneClinicaVO telefone){
		
		this.telefoneRecebidoEx = telefone;
	}
	
	public void excluirTelefone(){
		
		telefoneRecebidoEx.setStatus(bo.consultarStatusPorTipo(UtilFuncoes.TIPO_STATUS_INATIVO));
		
		bo.excluirTelefone(this.telefoneRecebidoEx);
		
		listaTelefonesCon = bo.consultarTelefonePorIdClinica(clinicaSelecionadaCon.getIdPessoa());
	}
	
	public void salvarClinica(){
		
		boolean flagSucesso = true;
		
		if(bo.isEmailInvalido(emailClinicaInc1) && bo.isEmailInvalido(emailClinicaInc2)){
			
			FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, linguagem.getString("clinica_erro_email"),""));
			
			flagSucesso = false;
		}
		
		if(!(bo.isTelefoneCompletoValido(dddClinicaInc1, telefoneClinicaInc1, codTipoTelefoneInc1) || (bo.isTelefoneCompletoValido(dddClinicaInc2, telefoneClinicaInc2, codTipoTelefoneInc2)))){
			
			FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, linguagem.getString("clinica_erro_telefone"), ""));
			
			flagSucesso = false;
			
		}
		
		if(!bo.isTamanhoEmailValido(emailClinicaInc1) && !bo.isTamanhoEmailValido(emailClinicaInc2)){
			
			FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, linguagem.getString("msg_tamanho_campo_email"), ""));
			
			flagSucesso = false;
		}
		
		if(!bo.isTamanhoDddValido(dddClinicaInc1) && !bo.isTamanhoDddValido(dddClinicaInc2)){
			
			FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, linguagem.getString("msg_tamanho_campo_ddd"), ""));
			
			flagSucesso = false;
		}
		
		if(!bo.isTamanhoTelefoneValido(telefoneClinicaInc1) && !bo.isTamanhoTelefoneValido(telefoneClinicaInc2)){
			
			FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, linguagem.getString("msg_tamanho_campo_telefone"), ""));
			
			flagSucesso = false;
		}
		
		if(bo.isCidadeInvalida(codCidadeInc.toString())){
			
			FacesContext.getCurrentInstance().addMessage("formulario:comboCidade", new FacesMessage(FacesMessage.SEVERITY_ERROR, linguagem.getString("incluir_clinica_erro_cidade"), ""));
			
			flagSucesso = false;
		}
		
		if(flagSucesso){
			
			ClinicaVO clinica = new ClinicaVO();
			
			
			//Setando a clinica
			clinica.setNomePessoa(nomeClinicaInc);
			clinica.setCnpj(cnpjClinicaInc);
			clinica.setStatusPessoa(status);
			clinica.setFotoClinica(vetorImagem);
			clinica.setDataAbertura(dataAberturaInc);
			
			List<ClinicaTelefoneClinicaVO> listaTelefones = new ArrayList<ClinicaTelefoneClinicaVO>();
			TelefoneClinicaVO telefoneClinica = null;
			ClinicaTelefoneClinicaVO ct = null;
			
			List<EmailClinicaVO> listaEmails = new ArrayList<EmailClinicaVO>();
			EmailClinicaVO emailClinica = null;
			
			List<EnderecoClinicaVO> listaEnderecos = new ArrayList<EnderecoClinicaVO>();
			EnderecoClinicaVO endereco = null;
			
			
			
			
			//Condições para adicionar os telefones na lista
			if(bo.isTelefoneCompletoValido(dddClinicaInc1, telefoneClinicaInc1, codTipoTelefoneInc1)){
				
				telefoneClinica = new TelefoneClinicaVO();
				ct = new ClinicaTelefoneClinicaVO();
					
					telefoneClinica.setDddClinica(dddClinicaInc1);
					telefoneClinica.setTelefoneClinica(telefoneClinicaInc1);
					telefoneClinica.setTipoTelefone(new TipoTelefoneVO());
					telefoneClinica.getTipoTelefone().setIdTipoTelefone(codTipoTelefoneInc1);
					telefoneClinica.setStatus(status);
					ct.setOperadora("Vivo");
					
					ct.setClinica(clinica);
					ct.setTelefone(telefoneClinica);
					
					listaTelefones.add(ct);
				
			}
				
			if(bo.isTelefoneCompletoValido(dddClinicaInc2, telefoneClinicaInc2, codTipoTelefoneInc2)){
				
				telefoneClinica = new TelefoneClinicaVO();
				ct = new ClinicaTelefoneClinicaVO();
				
				
					telefoneClinica.setDddClinica(dddClinicaInc2);
					telefoneClinica.setTelefoneClinica(telefoneClinicaInc2);
					telefoneClinica.setTipoTelefone(new TipoTelefoneVO());
					telefoneClinica.getTipoTelefone().setIdTipoTelefone(codTipoTelefoneInc2);
					telefoneClinica.setStatus(status);
					ct.setOperadora("Vivo");
					
					ct.setClinica(clinica);
					ct.setTelefone(telefoneClinica);
					
					
					listaTelefones.add(ct);
			}
			
			clinica.setListaClinicaTelefone(listaTelefones);
			
			
			//Condições para adicionar os emails na lista 
			if(!bo.isEmailInvalido(emailClinicaInc1)){
				
				emailClinica = new EmailClinicaVO();
				
					emailClinica.setEmailClinica(emailClinicaInc1);
					emailClinica.setStatus(status);
					emailClinica.setClinica(clinica);
					
					listaEmails.add(emailClinica);
				
			}
			if(!bo.isEmailInvalido(emailClinicaInc2)){
				
				
				 emailClinica = new EmailClinicaVO();
					
					emailClinica.setEmailClinica(emailClinicaInc2);
					emailClinica.setStatus(status);
					emailClinica.setClinica(clinica);
					
					listaEmails.add(emailClinica);
			}
			
			clinica.setEmails(listaEmails);
			
			//Setando o endereço
			endereco = new EnderecoClinicaVO();
			
			endereco.setBairroClinica(bairroClinicaInc);
			endereco.setCepClinica(cepClinicaInc);
			endereco.setLogradouroClinica(logradouroClinicaInc);
			endereco.setComplementoClinica(complementoClinicaInc);
			endereco.setCidade(new CidadeVO());
			endereco.getCidade().setIdCidade(codCidadeInc);
			endereco.setStatus(status);
			endereco.setClinica(clinica);
			
			listaEnderecos.add(endereco);
			
			clinica.setEnderecos(listaEnderecos);
			
			if(bo.incluir(clinica)) {
				
				FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, linguagem.getString("incluir_clinica_salvo_sucesso"), ""));
			}
			else{
				FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, linguagem.getString("incluir_clinica_erro_banco"), ""));

			}
		}
		
	}
	
	
	//Get e Set dos atributos
	public String getNomeClinicaInc() {
		return nomeClinicaInc;
	}

	public void setNomeClinicaInc(String nomeClinicaInc) {
		this.nomeClinicaInc = nomeClinicaInc;
	}

	public HtmlInputText getCampoNomeClinicaInc() {
		return campoNomeClinicaInc;
	}

	public void setCampoNomeClinicaInc(HtmlInputText campoNomeClinicaInc) {
		this.campoNomeClinicaInc = campoNomeClinicaInc;
	}

	public String getCnpjClinicaInc() {
		return cnpjClinicaInc;
	}

	public void setCnpjClinicaInc(String cnpjClinicaInc) {
		this.cnpjClinicaInc = cnpjClinicaInc;
	}

	public HtmlInputText getCampoCnpjClinicaInc() {
		return campoCnpjClinicaInc;
	}

	public void setCampoCnpjClinicaInc(HtmlInputText campoCnpjClinicaInc) {
		this.campoCnpjClinicaInc = campoCnpjClinicaInc;
	}

	public String getEmailClinicaInc1() {
		return emailClinicaInc1;
	}

	public void setEmailClinicaInc1(String emailClinicaInc1) {
		this.emailClinicaInc1 = emailClinicaInc1;
	}

	public HtmlInputText getCampoEmailClinciaInc1() {
		return campoEmailClinciaInc1;
	}

	public void setCampoEmailClinciaInc1(HtmlInputText campoEmailClinciaInc1) {
		this.campoEmailClinciaInc1 = campoEmailClinciaInc1;
	}

	public String getEmailClinicaInc2() {
		return emailClinicaInc2;
	}

	public void setEmailClinicaInc2(String emailClinicaInc2) {
		this.emailClinicaInc2 = emailClinicaInc2;
	}

	public HtmlInputText getCampoEmailClinciaInc2() {
		return campoEmailClinciaInc2;
	}

	public void setCampoEmailClinciaInc2(HtmlInputText campoEmailClinciaInc2) {
		this.campoEmailClinciaInc2 = campoEmailClinciaInc2;
	}

	public Integer getDddClinicaInc1() {
		return dddClinicaInc1;
	}

	public void setDddClinicaInc1(Integer dddClinicaInc1) {
		this.dddClinicaInc1 = dddClinicaInc1;
	}

	public HtmlInputText getCampoDddClinicaInc1() {
		return campoDddClinicaInc1;
	}

	public void setCampoDddClinicaInc1(HtmlInputText campoDddClinicaInc1) {
		this.campoDddClinicaInc1 = campoDddClinicaInc1;
	}

	public Long getTelefoneClinicaInc1() {
		return telefoneClinicaInc1;
	}

	public void setTelefoneClinicaInc1(Long telefoneClinicaInc1) {
		this.telefoneClinicaInc1 = telefoneClinicaInc1;
	}

	public HtmlInputText getCampoTelefoneClinicaInc1() {
		return campoTelefoneClinicaInc1;
	}

	public void setCampoTelefoneClinicaInc1(HtmlInputText campoTelefoneClinicaInc1) {
		this.campoTelefoneClinicaInc1 = campoTelefoneClinicaInc1;
	}

	public Long getCodTipoTelefoneInc1() {
		return codTipoTelefoneInc1;
	}

	public void setCodTipoTelefoneInc1(Long codTipoTelefoneInc1) {
		this.codTipoTelefoneInc1 = codTipoTelefoneInc1;
	}

	public List<SelectItem> getListaTipoTelefoneInc() {
		return listaTipoTelefoneInc;
	}

	public void setListaTipoTelefoneInc(List<SelectItem> listaTipoTelefoneInc) {
		this.listaTipoTelefoneInc = listaTipoTelefoneInc;
	}

	public HtmlSelectOneMenu getCampoTipoTelefoneInc1() {
		return campoTipoTelefoneInc1;
	}

	public void setCampoTipoTelefoneInc1(HtmlSelectOneMenu campoTipoTelefoneInc1) {
		this.campoTipoTelefoneInc1 = campoTipoTelefoneInc1;
	}


	public Integer getDddClinicaInc2() {
		return dddClinicaInc2;
	}


	public void setDddClinicaInc2(Integer dddClinicaInc2) {
		this.dddClinicaInc2 = dddClinicaInc2;
	}


	public Long getTelefoneClinicaInc2() {
		return telefoneClinicaInc2;
	}


	public void setTelefoneClinicaInc2(Long telefoneClinicaInc2) {
		this.telefoneClinicaInc2 = telefoneClinicaInc2;
	}


	public Long getCodTipoTelefoneInc2() {
		return codTipoTelefoneInc2;
	}


	public void setCodTipoTelefoneInc2(Long codTipoTelefoneInc2) {
		this.codTipoTelefoneInc2 = codTipoTelefoneInc2;
	}


	public HtmlInputText getCampoDddClinicaInc2() {
		return campoDddClinicaInc2;
	}


	public void setCampoDddClinicaInc2(HtmlInputText campoDddClinicaInc2) {
		this.campoDddClinicaInc2 = campoDddClinicaInc2;
	}


	public HtmlInputText getCampoTelefoneClinicaInc2() {
		return campoTelefoneClinicaInc2;
	}


	public void setCampoTelefoneClinicaInc2(HtmlInputText campoTelefoneClinicaInc2) {
		this.campoTelefoneClinicaInc2 = campoTelefoneClinicaInc2;
	}


	public HtmlSelectOneMenu getCampoTipoTelefoneInc2() {
		return campoTipoTelefoneInc2;
	}


	public void setCampoTipoTelefoneInc2(HtmlSelectOneMenu campoTipoTelefoneInc2) {
		this.campoTipoTelefoneInc2 = campoTipoTelefoneInc2;
	}


	public Long getCodEstadoInc() {
		return codEstadoInc;
	}


	public void setCodEstadoInc(Long codEstadoInc) {
		this.codEstadoInc = codEstadoInc;
	}


	public List<SelectItem> getListaEstadosInc() {
		return listaEstadosInc;
	}


	public void setListaEstadosInc(List<SelectItem> listaEstadosInc) {
		this.listaEstadosInc = listaEstadosInc;
	}


	public HtmlSelectOneMenu getCampoEstadoInc() {
		return campoEstadoInc;
	}


	public void setCampoEstadoInc(HtmlSelectOneMenu campoEstadoInc) {
		this.campoEstadoInc = campoEstadoInc;
	}


	public ClinicaBO getBo() {
		return bo;
	}


	public void setBo(ClinicaBO bo) {
		this.bo = bo;
	}


	public Long getCodCidadeInc() {
		return codCidadeInc;
	}


	public void setCodCidadeInc(Long codCidadeInc) {
		this.codCidadeInc = codCidadeInc;
	}


	public List<SelectItem> getListaCidadesInc() {
		return listaCidadesInc;
	}


	public void setListaCidadesInc(List<SelectItem> listaCidadesInc) {
		this.listaCidadesInc = listaCidadesInc;
	}


	public HtmlSelectOneMenu getCampoCidadeInc() {
		return campoCidadeInc;
	}


	public void setCampoCidadeInc(HtmlSelectOneMenu campoCidadeInc) {
		this.campoCidadeInc = campoCidadeInc;
	}

	public String getLogradouroClinicaInc() {
		return logradouroClinicaInc;
	}

	public void setLogradouroClinicaInc(String logradouroClinicaInc) {
		this.logradouroClinicaInc = logradouroClinicaInc;
	}

	public HtmlInputText getCampoLogradouroClinicaInc() {
		return campoLogradouroClinicaInc;
	}

	public void setCampoLogradouroClinicaInc(HtmlInputText campoLogradouroClinicaInc) {
		this.campoLogradouroClinicaInc = campoLogradouroClinicaInc;
	}

	public String getBairroClinicaInc() {
		return bairroClinicaInc;
	}

	public void setBairroClinicaInc(String bairroClinicaInc) {
		this.bairroClinicaInc = bairroClinicaInc;
	}

	public HtmlInputText getCampoBairroClinicaInc() {
		return campoBairroClinicaInc;
	}

	public void setCampoBairroClinicaInc(HtmlInputText campoBairroClinicaInc) {
		this.campoBairroClinicaInc = campoBairroClinicaInc;
	}

	public String getCepClinicaInc() {
		return cepClinicaInc;
	}

	public void setCepClinicaInc(String cepClinicaInc) {
		this.cepClinicaInc = cepClinicaInc;
	}

	public HtmlInputText getCampoCepClinicaInc() {
		return campoCepClinicaInc;
	}

	public void setCampoCepClinicaInc(HtmlInputText campoCepClinicaInc) {
		this.campoCepClinicaInc = campoCepClinicaInc;
	}

	public String getComplementoClinicaInc() {
		return complementoClinicaInc;
	}

	public void setComplementoClinicaInc(String complementoClinicaInc) {
		this.complementoClinicaInc = complementoClinicaInc;
	}

	public HtmlInputText getCampoComplementoClinicaInc() {
		return campoComplementoClinicaInc;
	}

	public void setCampoComplementoClinicaInc(
			HtmlInputText campoComplementoClinicaInc) {
		this.campoComplementoClinicaInc = campoComplementoClinicaInc;
	}

	public ClinicaVO getClinicaSelecionadaAlt() {
		return clinicaSelecionadaAlt;
	}

	public void setClinicaSelecionadaAlt(ClinicaVO clinicaSelecionadaAlt) {
		this.clinicaSelecionadaAlt = clinicaSelecionadaAlt;
	}

	public String getNomeClinicaAlt() {
		return nomeClinicaAlt;
	}

	public void setNomeClinicaAlt(String nomeClinicaAlt) {
		this.nomeClinicaAlt = nomeClinicaAlt;
	}

	public String getCnpjClinicaAlt() {
		return cnpjClinicaAlt;
	}

	public void setCnpjClinicaAlt(String cnpjClinicaAlt) {
		this.cnpjClinicaAlt = cnpjClinicaAlt;
	}

	public String getNomeClinicaCon() {
		return nomeClinicaCon;
	}

	public void setNomeClinicaCon(String nomeClinicaCon) {
		this.nomeClinicaCon = nomeClinicaCon;
	}

	public String getCnpjClinicaCon() {
		return cnpjClinicaCon;
	}

	public void setCnpjClinicaCon(String cnpjClinicaCon) {
		this.cnpjClinicaCon = cnpjClinicaCon;
	}

	public List<ClinicaVO> getListaClinicasCon() {
		return listaClinicasCon;
	}

	public void setListaClinicasCon(List<ClinicaVO> listaClinicasCon) {
		this.listaClinicasCon = listaClinicasCon;
	}

	public LinguagemBean getLinguagem() {
		return linguagem;
	}

	public void setLinguagem(LinguagemBean linguagem) {
		this.linguagem = linguagem;
	}

	public ClinicaVO getClinicaSelecionadaCon() {
		return clinicaSelecionadaCon;
	}

	public void setClinicaSelecionadaCon(ClinicaVO clinicaSelecionadaCon) {
		this.clinicaSelecionadaCon = clinicaSelecionadaCon;
	}

	public List<EmailClinicaVO> getListaEmailsCon() {
		return listaEmailsCon;
	}

	public void setListaEmailsCon(List<EmailClinicaVO> listaEmailsCon) {
		this.listaEmailsCon = listaEmailsCon;
	}

	public List<TelefoneClinicaVO> getListaTelefonesCon() {
		return listaTelefonesCon;
	}

	public void setListaTelefonesCon(List<TelefoneClinicaVO> listaTelefonesCon) {
		this.listaTelefonesCon = listaTelefonesCon;
	}

	public List<EnderecoClinicaVO> getListaEnderecosCon() {
		return listaEnderecosCon;
	}

	public void setListaEnderecosCon(List<EnderecoClinicaVO> listaEnderecosCon) {
		this.listaEnderecosCon = listaEnderecosCon;
	}

	public EmailClinicaVO getEmailSelecionadoAlt() {
		return emailSelecionadoAlt;
	}

	public void setEmailSelecionadoAlt(EmailClinicaVO emailSelecionadoAlt) {
		this.emailSelecionadoAlt = emailSelecionadoAlt;
	}

	public String getEmailClinicaAlt() {
		return emailClinicaAlt;
	}

	public void setEmailClinicaAlt(String emailClinicaAlt) {
		this.emailClinicaAlt = emailClinicaAlt;
	}

	public EnderecoClinicaVO getEnderecoSelecionadoAlt() {
		return enderecoSelecionadoAlt;
	}

	public void setEnderecoSelecionadoAlt(EnderecoClinicaVO enderecoSelecionadoAlt) {
		this.enderecoSelecionadoAlt = enderecoSelecionadoAlt;
	}

	public String getLogradouroClinicaAlt() {
		return logradouroClinicaAlt;
	}

	public void setLogradouroClinicaAlt(String logradouroClinicaAlt) {
		this.logradouroClinicaAlt = logradouroClinicaAlt;
	}

	public String getBairroClinicaAlt() {
		return bairroClinicaAlt;
	}

	public void setBairroClinicaAlt(String bairroClinicaAlt) {
		this.bairroClinicaAlt = bairroClinicaAlt;
	}

	public String getCepClinicaAlt() {
		return cepClinicaAlt;
	}

	public void setCepClinicaAlt(String cepClinicaAlt) {
		this.cepClinicaAlt = cepClinicaAlt;
	}

	public String getComplementoClinicaAlt() {
		return complementoClinicaAlt;
	}

	public void setComplementoClinicaAlt(String complementoClinicaAlt) {
		this.complementoClinicaAlt = complementoClinicaAlt;
	}

	public Long getCodEstadoAlt() {
		return codEstadoAlt;
	}

	public void setCodEstadoAlt(Long codEstadoAlt) {
		this.codEstadoAlt = codEstadoAlt;
	}

	public List<SelectItem> getListaEstadosAlt() {
		return listaEstadosAlt;
	}

	public void setListaEstadosAlt(List<SelectItem> listaEstadosAlt) {
		this.listaEstadosAlt = listaEstadosAlt;
	}

	public Long getCodCidadeAlt() {
		return codCidadeAlt;
	}

	public void setCodCidadeAlt(Long codCidadeAlt) {
		this.codCidadeAlt = codCidadeAlt;
	}

	public List<SelectItem> getListaCidadesAlt() {
		return listaCidadesAlt;
	}

	public void setListaCidadesAlt(List<SelectItem> listaCidadesAlt) {
		this.listaCidadesAlt = listaCidadesAlt;
	}

	public HtmlSelectOneMenu getCampoCidadeAlt() {
		return campoCidadeAlt;
	}

	public void setCampoCidadeAlt(HtmlSelectOneMenu campoCidadeAlt) {
		this.campoCidadeAlt = campoCidadeAlt;
	}

	public HtmlSelectOneMenu getCampoEstadoAlt() {
		return campoEstadoAlt;
	}

	public void setCampoEstadoAlt(HtmlSelectOneMenu campoEstadoAlt) {
		this.campoEstadoAlt = campoEstadoAlt;
	}

	public TelefoneClinicaVO getTelefoneSelecionadoAlt() {
		return telefoneSelecionadoAlt;
	}

	public void setTelefoneSelecionadoAlt(TelefoneClinicaVO telefoneSelecionadoAlt) {
		this.telefoneSelecionadoAlt = telefoneSelecionadoAlt;
	}

	public Integer getDddClinicaAlt() {
		return dddClinicaAlt;
	}

	public void setDddClinicaAlt(Integer dddClinicaAlt) {
		this.dddClinicaAlt = dddClinicaAlt;
	}

	public Long getTelefoneClinicaAlt() {
		return telefoneClinicaAlt;
	}

	public void setTelefoneClinicaAlt(Long telefoneClinicaAlt) {
		this.telefoneClinicaAlt = telefoneClinicaAlt;
	}

	public Long getCodTipoTelefoneAlt() {
		return codTipoTelefoneAlt;
	}

	public void setCodTipoTelefoneAlt(Long codTipoTelefoneAlt) {
		this.codTipoTelefoneAlt = codTipoTelefoneAlt;
	}

	public List<SelectItem> getListaTipoTelefoneAlt() {
		return listaTipoTelefoneAlt;
	}

	public void setListaTipoTelefoneAlt(List<SelectItem> listaTipoTelefoneAlt) {
		this.listaTipoTelefoneAlt = listaTipoTelefoneAlt;
	}

	public HtmlSelectOneMenu getCampoTipoTelefoneAlt() {
		return campoTipoTelefoneAlt;
	}

	public void setCampoTipoTelefoneAlt(HtmlSelectOneMenu campoTipoTelefoneAlt) {
		this.campoTipoTelefoneAlt = campoTipoTelefoneAlt;
	}

	public HtmlInputText getCampoEmailClinicaAlt() {
		return campoEmailClinicaAlt;
	}

	public void setCampoEmailClinicaAlt(HtmlInputText campoEmailClinicaAlt) {
		this.campoEmailClinicaAlt = campoEmailClinicaAlt;
	}

	public HtmlInputText getCampoDddClinicaAlt() {
		return campoDddClinicaAlt;
	}

	public void setCampoDddClinicaAlt(HtmlInputText campoDddClinicaAlt) {
		this.campoDddClinicaAlt = campoDddClinicaAlt;
	}

	public HtmlInputText getCampoTelefoneClinicaAlt() {
		return campoTelefoneClinicaAlt;
	}

	public void setCampoTelefoneClinicaAlt(HtmlInputText campoTelefoneClinicaAlt) {
		this.campoTelefoneClinicaAlt = campoTelefoneClinicaAlt;
	}

	public HtmlInputText getCampoLogradouroClinicaAlt() {
		return campoLogradouroClinicaAlt;
	}

	public void setCampoLogradouroClinicaAlt(HtmlInputText campoLogradouroClinicaAlt) {
		this.campoLogradouroClinicaAlt = campoLogradouroClinicaAlt;
	}

	public HtmlInputText getCampoBairroClinicaAlt() {
		return campoBairroClinicaAlt;
	}

	public void setCampoBairroClinicaAlt(HtmlInputText campoBairroClinicaAlt) {
		this.campoBairroClinicaAlt = campoBairroClinicaAlt;
	}

	public HtmlInputText getCampoCepClinicaAlt() {
		return campoCepClinicaAlt;
	}

	public void setCampoCepClinicaAlt(HtmlInputText campoCepClinicaAlt) {
		this.campoCepClinicaAlt = campoCepClinicaAlt;
	}

	public HtmlInputText getCampoComplementoClinicaAlt() {
		return campoComplementoClinicaAlt;
	}

	public void setCampoComplementoClinicaAlt(
			HtmlInputText campoComplementoClinicaAlt) {
		this.campoComplementoClinicaAlt = campoComplementoClinicaAlt;
	}

	public HtmlInputText getCampoNomeClinicaAlt() {
		return campoNomeClinicaAlt;
	}

	public void setCampoNomeClinicaAlt(HtmlInputText campoNomeClinicaAlt) {
		this.campoNomeClinicaAlt = campoNomeClinicaAlt;
	}

	public HtmlInputText getCampoCnpjClinicaAlt() {
		return campoCnpjClinicaAlt;
	}

	public void setCampoCnpjClinicaAlt(HtmlInputText campoCnpjClinicaAlt) {
		this.campoCnpjClinicaAlt = campoCnpjClinicaAlt;
	}

	public ClinicaVO getClinicaVODetalhe() {
		return clinicaVODetalhe;
	}

	public void setClinicaVODetalhe(ClinicaVO clinicaVODetalhe) {
		this.clinicaVODetalhe = clinicaVODetalhe;
	}

	public ClinicaVO getClinicaRecebidoEx() {
		return clinicaRecebidoEx;
	}

	public void setClinicaRecebidoEx(ClinicaVO clinicaRecebidoEx) {
		this.clinicaRecebidoEx = clinicaRecebidoEx;
	}

	public EmailClinicaVO getEmailRecebidoEx() {
		return emailRecebidoEx;
	}

	public void setEmailRecebidoEx(EmailClinicaVO emailRecebidoEx) {
		this.emailRecebidoEx = emailRecebidoEx;
	}

	public EnderecoClinicaVO getEnderecoRecebidoEx() {
		return enderecoRecebidoEx;
	}

	public void setEnderecoRecebidoEx(EnderecoClinicaVO enderecoRecebidoEx) {
		this.enderecoRecebidoEx = enderecoRecebidoEx;
	}

	public TelefoneClinicaVO getTelefoneRecebidoEx() {
		return telefoneRecebidoEx;
	}

	public void setTelefoneRecebidoEx(TelefoneClinicaVO telefoneRecebidoEx) {
		this.telefoneRecebidoEx = telefoneRecebidoEx;
	}

	public StatusVO getStatus() {
		return status;
	}

	public void setStatus(StatusVO status) {
		this.status = status;
	}

	public List<EmailClinicaVO> getListaEmailsAuxInc() {
		return listaEmailsAuxInc;
	}

	public void setListaEmailsAuxInc(List<EmailClinicaVO> listaEmailsAuxInc) {
		this.listaEmailsAuxInc = listaEmailsAuxInc;
	}

	public List<EmailClinicaVO> getListaEmailsAuxExc() {
		return listaEmailsAuxExc;
	}

	public void setListaEmailsAuxExc(List<EmailClinicaVO> listaEmailsAuxExc) {
		this.listaEmailsAuxExc = listaEmailsAuxExc;
	}

	public List<EmailClinicaVO> getListaDialogEmail() {
		return listaDialogEmail;
	}

	public void setListaDialogEmail(List<EmailClinicaVO> listaDialogEmail) {
		this.listaDialogEmail = listaDialogEmail;
	}

	public String getEmailClinicaAux() {
		return emailClinicaAux;
	}

	public void setEmailClinicaAux(String emailClinicaAux) {
		this.emailClinicaAux = emailClinicaAux;
	}

	public HtmlInputText getCampoEmailClinciaInc() {
		return campoEmailClinciaInc;
	}

	public void setCampoEmailClinciaInc(HtmlInputText campoEmailClinciaInc) {
		this.campoEmailClinciaInc = campoEmailClinciaInc;
	}

	public Long getIdClinicaAlt() {
		return idClinicaAlt;
	}

	public void setIdClinicaAlt(Long idClinicaAlt) {
		this.idClinicaAlt = idClinicaAlt;
	}

	public List<EnderecoClinicaVO> getListaEnderecoAuxInc() {
		return listaEnderecoAuxInc;
	}

	public void setListaEnderecoAuxInc(List<EnderecoClinicaVO> listaEnderecoAuxInc) {
		this.listaEnderecoAuxInc = listaEnderecoAuxInc;
	}

	public List<EnderecoClinicaVO> getListaEnderecoAuxExc() {
		return listaEnderecoAuxExc;
	}

	public void setListaEnderecoAuxExc(List<EnderecoClinicaVO> listaEnderecoAuxExc) {
		this.listaEnderecoAuxExc = listaEnderecoAuxExc;
	}

	public List<EnderecoClinicaVO> getListaDialogEndereco() {
		return listaDialogEndereco;
	}

	public void setListaDialogEndereco(List<EnderecoClinicaVO> listaDialogEndereco) {
		this.listaDialogEndereco = listaDialogEndereco;
	}

	public String getLogradouroClinicaAux() {
		return logradouroClinicaAux;
	}

	public void setLogradouroClinicaAux(String logradouroClinicaAux) {
		this.logradouroClinicaAux = logradouroClinicaAux;
	}

	public String getBairroClinicaAux() {
		return bairroClinicaAux;
	}

	public void setBairroClinicaAux(String bairroClinicaAux) {
		this.bairroClinicaAux = bairroClinicaAux;
	}

	public String getCepClinicaAux() {
		return cepClinicaAux;
	}

	public void setCepClinicaAux(String cepClinicaAux) {
		this.cepClinicaAux = cepClinicaAux;
	}

	public String getComplementoClinicaAux() {
		return complementoClinicaAux;
	}

	public void setComplementoClinicaAux(String complementoClinicaAux) {
		this.complementoClinicaAux = complementoClinicaAux;
	}

	public Long getCodEstadoAux() {
		return codEstadoAux;
	}

	public void setCodEstadoAux(Long codEstadoAux) {
		this.codEstadoAux = codEstadoAux;
	}

	public Long getCodCidadeAux() {
		return codCidadeAux;
	}

	public void setCodCidadeAux(Long codCidadeAux) {
		this.codCidadeAux = codCidadeAux;
	}

	public List<SelectItem> getListaEstadosAux() {
		return listaEstadosAux;
	}

	public void setListaEstadosAux(List<SelectItem> listaEstadosAux) {
		this.listaEstadosAux = listaEstadosAux;
	}

	public List<SelectItem> getListaCidadesAux() {
		return listaCidadesAux;
	}

	public void setListaCidadesAux(List<SelectItem> listaCidadesAux) {
		this.listaCidadesAux = listaCidadesAux;
	}

	public HtmlSelectOneMenu getCampoCidadeAux() {
		return campoCidadeAux;
	}

	public void setCampoCidadeAux(HtmlSelectOneMenu campoCidadeAux) {
		this.campoCidadeAux = campoCidadeAux;
	}

	public List<TelefoneClinicaVO> getListaTelefoneAuxInc() {
		return listaTelefoneAuxInc;
	}

	public void setListaTelefoneAuxInc(List<TelefoneClinicaVO> listaTelefoneAuxInc) {
		this.listaTelefoneAuxInc = listaTelefoneAuxInc;
	}

	public List<TelefoneClinicaVO> getListaTelefoneAuxExc() {
		return listaTelefoneAuxExc;
	}

	public void setListaTelefoneAuxExc(List<TelefoneClinicaVO> listaTelefoneAuxExc) {
		this.listaTelefoneAuxExc = listaTelefoneAuxExc;
	}

	public List<TelefoneClinicaVO> getListaDialogTelefone() {
		return listaDialogTelefone;
	}

	public void setListaDialogTelefone(List<TelefoneClinicaVO> listaDialogTelefone) {
		this.listaDialogTelefone = listaDialogTelefone;
	}

	public Long getTelefoneClinicaAux() {
		return telefoneClinicaAux;
	}

	public void setTelefoneClinicaAux(Long telefoneClinicaAux) {
		this.telefoneClinicaAux = telefoneClinicaAux;
	}

	public Integer getDddClinicaAux() {
		return dddClinicaAux;
	}

	public void setDddClinicaAux(Integer dddClinicaAux) {
		this.dddClinicaAux = dddClinicaAux;
	}

	public Long getCodTipoTelefoneAux() {
		return codTipoTelefoneAux;
	}

	public void setCodTipoTelefoneAux(Long codTipoTelefoneAux) {
		this.codTipoTelefoneAux = codTipoTelefoneAux;
	}

	public List<SelectItem> getListaTipoTelefoneAux() {
		return listaTipoTelefoneAux;
	}

	public void setListaTipoTelefoneAux(List<SelectItem> listaTipoTelefoneAux) {
		this.listaTipoTelefoneAux = listaTipoTelefoneAux;
	}

	public Part getImagemClinica() {
		return imagemClinica;
	}

	public void setImagemClinica(Part imagemClinica) {
		this.imagemClinica = imagemClinica;
	}

	public boolean isFlagFrameInc() {
		return flagFrameInc;
	}

	public void setFlagFrameInc(boolean flagFrameInc) {
		this.flagFrameInc = flagFrameInc;
	}

	public String getMsgImagem() {
		return msgImagem;
	}

	public void setMsgImagem(String msgImagem) {
		this.msgImagem = msgImagem;
	}

	public byte[] getVetorImagem() {
		return vetorImagem;
	}

	public void setVetorImagem(byte[] vetorImagem) {
		this.vetorImagem = vetorImagem;
	}

	public boolean isFlagImagem() {
		return flagImagem;
	}

	public void setFlagImagem(boolean flagImagem) {
		this.flagImagem = flagImagem;
	}

	public Part getImagemClinicaAlt() {
		return imagemClinicaAlt;
	}

	public void setImagemClinicaAlt(Part imagemClinicaAlt) {
		this.imagemClinicaAlt = imagemClinicaAlt;
	}

	public boolean isFlagFrameAlt() {
		return flagFrameAlt;
	}

	public void setFlagFrameAlt(boolean flagFrameAlt) {
		this.flagFrameAlt = flagFrameAlt;
	}

	public boolean isFlagImagemAlt() {
		return flagImagemAlt;
	}

	public void setFlagImagemAlt(boolean flagImagemAlt) {
		this.flagImagemAlt = flagImagemAlt;
	}

	public String getMsgImagemAlt() {
		return msgImagemAlt;
	}

	public void setMsgImagemAlt(String msgImagemAlt) {
		this.msgImagemAlt = msgImagemAlt;
	}

	public byte[] getVetorImagemAlt() {
		return vetorImagemAlt;
	}

	public void setVetorImagemAlt(byte[] vetorImagemAlt) {
		this.vetorImagemAlt = vetorImagemAlt;
	}

	public Date getDataAberturaInc() {
		return dataAberturaInc;
	}

	public void setDataAberturaInc(Date dataAberturaInc) {
		this.dataAberturaInc = dataAberturaInc;
	}

	public Date getDataAberturaAlt() {
		return dataAberturaAlt;
	}

	public void setDataAberturaAlt(Date dataAberturaAlt) {
		this.dataAberturaAlt = dataAberturaAlt;
	}
	
	
	public void uwer823(){
		
	}

	public String getCampoAutoComplete() {
		return campoAutoComplete;
	}

	public void setCampoAutoComplete(String campoAutoComplete) {
		this.campoAutoComplete = campoAutoComplete;
	}
	
	
}